/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ar.edu.unicen.twitter.suggest.commons.dtos;
import ar.edu.unicen.twitter.suggest.backend.dtos.TweetApi;
import java.util.Collection;
import java.util.List;

/**
 *
 * @author Marcio
 */

//Usuario a recomendar, contiene los datos necesarios para el procesamiento de cada uno

public abstract class Usuario implements Comparable<Usuario>{
    //descriptivos
    public static long NO_ID = -1;

    public static int calculateHashCode(long id) {
        return (int) (id ^ (id >>> 32));
    }
    //estadisticos
    private int mentions = 0;
    private double score =0.0;
    private int posicion = -1;
    
    public void setMentions(int mentions2){
        mentions = mentions2;
    }

    public void setScore(double userScore){
        score = userScore;
    }
    
    public int getMentions(){
        return mentions;
    }            
    public double getScore(){
        return score;
    }
    
    @Override
    public abstract boolean equals(Object o1);

    public abstract long[] getFollowersIds();
    public abstract Collection<Usuario> getFollowers();
    
    public abstract int getFollowersCount();
   
    public abstract long[] getFollowsIds();
    public abstract Collection<Usuario> getFollows();

    public abstract int getFollowsCount();

    public abstract String getScreenName();

    public abstract List<TweetApi> getTweets();

    public abstract int getTweetsCount();

    public abstract long getId();

    public abstract boolean isProtected();
    
    @Override
    public abstract int hashCode();

    @Override
    public abstract String toString();

    public int getPosicion() {
        return posicion;
    }

    public void setPosicion(int posicion) {
        this.posicion = posicion;
    }

    @Override
    public int compareTo(Usuario t) {
        return new Long(this.getId()).compareTo(t.getId());
    }
    
}
